/**
 * base64转码  支持中文
 * @param data string 要转码码的数据
 * @return string
 */
$.b64Enc = function (data) {
	let enc='';  data=data.replace(/\r\n/g, "\n");
	for(let n=0, x; n<data.length; n++){
		if((x=data.charCodeAt(n))<128) enc += String.fromCharCode(x);
		else if((x>127) && (x<2048)){
			enc += String.fromCharCode((x>>6) | 192);
			enc += String.fromCharCode((x&63) | 128);
		}
		else{
			enc += String.fromCharCode((x>>12) | 224);
			enc += String.fromCharCode(((x>>6)&63) | 128);
			enc += String.fromCharCode((x&63) | 128);
		}
	}
	let rtn='', i=0, c1, c2, c3, e1, e2, e3, e4;
	while(i<enc.length){
		c1=enc.charCodeAt(i++); c2=enc.charCodeAt(i++); c3=enc.charCodeAt(i++);
		e1=c1>>2;  e2=((c1&3)<<4)|(c2>>4);  e3=((c2&15)<<2)|(c3>>6);  e4=c3&63;
		if(isNaN(c2)) e3=e4=64;  else if(isNaN(c3)) e4=64;
		rtn += $.b64Str[e1] + $.b64Str[e2] + $.b64Str[e3] + $.b64Str[e4];
	}
	return rtn;
};
